Open Graphics Library (OpenGL) is a standard specification that defines a cross-language and multi-platform (e.g., an application programming interface (API)) for writing applications and simulating physics, which produce two-dimensional (2D) and three-dimensional (3D) computer graphics. OpenGL is used in different graphics applications, such as Computer Aided Design (CAD) applications. OpenGL supports hardware based rendering for 3D graphics using a graphics processing unit (GPU), where hardware vendors can provide drivers for GPU rendering. Software based rendering is also possible with OpenGL using open source community produced software independent of GPU hardware vendors. Software based rendering can be achieved without using a GPU, e.g., using a central processing unit (CPU) instead.
In applications where graphics processing is implemented remotely on a virtual machine (VM) at a remote server, for example via a remote desktop or virtual desktop infrastructure (VDI), OpenGL rendering (e.g., for 3D graphics) on the VM is achieved with hardware using GPU instead of software based rendering. Software based rendering using CPU may be possible on the VM, but may also reduce performance (e.g., in terms of processing speed and/or memory). However, a plurality of VMs may share a limited number of GPUs, such as at a hypervisor, due to cost and possibly other resource limitations. For example, one or few VMs may directly access and use one or few corresponding GPUs, while the remaining VMs in the system may not have access to a GPU. In such cases, the VMs without GPU access can only implement software based rendering using CPU processing, which could reduce overall system performance for OpenGL rendering of 3D graphics. Improving the VMs access to limited GPU processing power in a system (e.g., a hypervisor or a server) can improve performance, e.g., in terms of processing speed and/or resource requirements.